package org.springblade.modules.restaurant.service;

import org.springblade.modules.restaurant.vo.SearchTimeVO;

import java.util.List;
import java.util.Map;

/**
 * @author harry
 * @公众号 Harry技术
 */
public interface IDashBoardService {

	/**
	 * 首页数据统计
	 *
	 * @param userId
	 * @param tenantId 租户ID
	 * @param role     角色
	 * @return
	 */
	List<Map<String, Object>> dataCounts(Long userId, String tenantId, String role);

	/**
	 * 区域月评分统计
	 *
	 * @param userId   用户ID
	 * @param tenantId 租户ID
	 * @param role     角色
	 * @return
	 */
	Map<String, Object> areaMonthsScores(Long userId, String tenantId, String role);

	/**
	 * 日收入支出统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> dayIncomeExpenditureStatistics(Long userId, String tenantId, String role);

	/**
	 * 月收入支出统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> monthIncomeExpenditureStatistics(Long userId, String tenantId, String role);

	/**
	 * 任务统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> taskStatistics(Long userId, String tenantId, String role);

	/**
	 * 小程序待办事项
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	List<Map<String, Object>> todoListByMini(Long userId, String tenantId, String role);

	/**
	 * 小程序任务统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> taskStatisticsByMini(Long userId, String tenantId, String role);

	/**
	 * 小程序评分统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> scoreStatisticsByMini(Long userId, String tenantId, String role);

	/**
	 * 小程序日收入支出统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @param searchTime
	 * @return
	 */
	Map<String, Object> dayIncomeExpenditureStatisticsByMini(Long userId, String tenantId, String role, SearchTimeVO searchTime);

	/**
	 * 小程序月收入支出统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> monthIncomeExpenditureStatisticsByMini(Long userId, String tenantId, String role);

	/**
	 * 小程序考勤统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @param searchTime 查询时间范围
	 * @return
	 */
	Map<String, Object> attendanceStatisticsByMini(Long userId, String tenantId, String role, SearchTimeVO searchTime);

	/**
	 * 考勤统计
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> attendanceStatistics(Long userId, String tenantId, String role);

	/**
	 * 当日收入支出统计
	 *
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @param day
	 * @return
	 */
	Map<String, Object> todayIncomeExpenditureStatistics(Long userId, String tenantId, String role, String day);

	/**
	 * 部门人员统计
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	List<Map<String, Object>> deptUserStatistics(Long userId, String tenantId, String role);

	/**
	 * 日人效统计
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> dailyHumanEfficiency(Long userId, String tenantId, String role);

	/**
	 * 月人效统计
	 * @param userId
	 * @param tenantId
	 * @param role
	 * @return
	 */
	Map<String, Object> monthlyHumanEfficiency(Long userId, String tenantId, String role);
}
